<?php
/**
 * Captcha.class.php 验证码操作类
 * ----------------------------------------------------------------
 * OldCMS,site:http://www.oldcms.com
 */
if(!defined('IN_OLDCMS')) { die('Access Denied');
}

class Captcha
{
    /* 生成验证码 */
    public static function Create($width=75,$height=20,$num=4)
    {
        /* 获得验证码 */
        $captcha='';
        $str='abcdefghjkmnpqrstuvwxyz';
        $str.=strtoupper($str);
        $str.='23456789';
        $len=strlen($str);
        for($i=0;$i<$num;$i++){
            $key=rand(0, $len-1);
            $captcha.=$str[$key];
        }
        /* 生成验证码图片 */
        $im=imagecreate($width, $height);
        //主要用到黑白灰三种色
        $black=imagecolorallocate($im, 0, 0, 0);
        $white=imagecolorallocate($im, 255, 255, 255);
        $gray=imagecolorallocate($im, 200, 200, 200);
        imagefill($im, $width, $height, $black);
        //干扰线
        $li=imagecolorallocate($im, 220, 220, 220);
        for($i=0;$i<3;$i++){ 
            imageline($im, rand(0, 30), rand(0, 21), rand(20, 40), rand(0, 21), $li);
        }
        //插入验证码字符
        imagestring($im, 5, 15, 2, $captcha, $white);
        //加入干扰象素
        for($i=0;$i<$width;$i++){
            imagesetpixel($im, rand()%80, rand()%30, $gray);
        }
        /* 将验证码存储至session */
        @session_start();
        $_SESSION['captcha']=$captcha;
        /* 输出 */
        header("Content-type:image/png");
        imagepng($im);
        imagedestroy($im);
    }
    /* 验证 */
    public static function Check($captcha='')
    {
        @session_start();
        $captchaData=strtolower($_SESSION['captcha']);
        $_SESSION['captcha']='';
        unset($_SESSION['captcha']);
        return strtolower($captcha)==$captchaData;
    }
}
